/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package leitorescritorcomthread;

/**
 *
 * @author Pedro Ribeiro
 */
public class Semaforo {

    private boolean escrita;
    private boolean leitura;

    //Há muitas redundâncias, mas é para facilitar ainda mais a leitura, apenas.
    
    public Semaforo(boolean escrita, boolean leitura) {
        this.escrita = escrita;
        this.leitura = leitura;
    }
    
    public Semaforo() {
    }
    
    boolean estaAbertoParaEscrita() {
        return escrita;
    }
    
    void fecharParaEscrita() {
        escrita = false;
    }

    void abrirParaEscrita() {
        escrita = true;
    }
    
    boolean estaAbertoParaLeituraEscrita() {
        return leitura && escrita;
    }
    
    void fecharParaLeituraEscrita() {
        escrita = false;
        leitura = false;
    }

    void abrirParaLeituraEscrita() {
        leitura = true;
        escrita = true;
    }

    

    
    boolean estaAbertoParaLeitura(){
        return leitura;
    }
    
    void abrirParaLeitura() {
        leitura = true;
    }

    void fecharParaLeitura() {
        leitura = false;
    }

    boolean estaFechadoParaLeitura() {
        return !leitura;
    }

    boolean estaFechadoParaEscrita() {
        return !escrita;
    }
}
